/*************************************************************************
	> File Name: speed_fork_vfork.c
	> Author: Angel Criss
	> Mail: abbytsing@gmail.com 
	> Created Time: 四  7/17 20:29:54 2014
 ************************************************************************/
//创建10万个进程(子进程创建完立即退出,父进程等待子进程退出
//比较 fork() 与  vfork() 创建进程速度上的差异

#include"../../process/head.h"
#include<string.h>
int main(int argc, char *argv[])
{
    if(argc<2)
    {
        printf("%s fork\nor\n%s vfork\n",argv[0],argv[0]);
        exit(0);
    }
 
    int i,j;

    if(strcmp(argv[1],"fork")==0)
    {
        for(i=0;i<1000;i++)
            for(j=0;j<100;j++)
            {
                switch(fork()){
                    case -1:
                        err("fork");
                    case 0:
                        exit(0);
                    default:
                        wait(NULL);
                        break;
                }
            }
    }
    else if(strcmp(argv[1],"vfork")==0)
    {
        for(i=0;i<1000;i++)
            for(j=0;j<100;j++)
            {
                switch(fork()){
                    case -1:
                        err("fork");
                    case 0:
                        exit(0);
                    default:
                        wait(NULL);
                        break;
                }
            }
    }
    else
        exit(EXIT_FAILURE);
}
